package com.hncc.kumao.util;

import java.io.File;
import java.util.UUID;

public class MyFileUtils {
    
    public static String getUuidFileName(String fileName) {
        String extions = getFileSuffix(fileName);
        return UUID.randomUUID().toString().replace("-", "") + extions;
    }
    
    public static String getFileSuffix(String fileName) {
        int idx = fileName.lastIndexOf(".");
        String suffix = fileName.substring(idx);//后缀名
        return suffix;
    }
    
    public static String getFileParentDir(String filePath) {
        return filePath.substring(0, filePath.lastIndexOf("/"));
    }
    
    //递归删除一个目录下所有文件及和子目录及其文件
    public static void deleteFile(File file) {
        //判断文件不为null或文件目录存在
        if (file == null || !file.exists()){
            throw new RuntimeException("该文件不存在");
        }
        //取得这个目录下的所有子文件对象
        File[] files = file.listFiles();
        //遍历该目录下的文件对象
        for (File f: files){
            //打印文件名
            String name = file.getName();
            //判断子目录是否存在子目录,如果是文件则删除
            if (f.isDirectory()){
                deleteFile(f);
            }else {
                f.delete();
            }
        }
        //删除空文件夹  for循环已经把上一层节点的目录清空。
        file.delete();
    }
    
    //递归获取一个目录下的所有文件大小
    public static Long getDirSize(File file) {
        //判断文件是否存在
        if(file.exists()) {
            //如果是目录则递归计算其内容的总大小    
            if (file.isDirectory()) {
                File[] children = file.listFiles();
                Long size = 0l;
                for (File f : children) {
                    size += getDirSize(f);
                }
                return size;
            } else {
                return file.length();
            }
        } else {
            return 0l;
        }
    }
}
